package applicationAlibi;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

public class generationConvocationPDF {

	private static Font basefont = new Font(Font.FontFamily.HELVETICA, 12,Font.BOLD); 
	//private static Font basefont2 = new Font(Font.FontFamily.TIMES_ROMAN, 12,Font.BOLD); 
	private static Font smallfont = new Font(Font.FontFamily.HELVETICA, 11); 
	
	private String nomExp,adresseExp,villeExp,cpExp,nom,prenom,adresse,ville,poste,motifConvocation;
	private String ordreDuJour,yearE,monthE,dayE,yearA,monthA,dayA,yearR,monthR,dayR,lieuA,heureA,lieuR,heureR; 
	
	public generationConvocationPDF(String nomExp, String adresseExp, String villeExp, String cpExp, String motifConvocation, String poste, String ordreDuJour, String prenom, String nom, String adresse, String ville, String yearE, String monthE, String dayE, String yearA, String monthA, String dayA, String yearR, String monthR, String dayR, String lieuA, String heureA, String lieuR, String heureR) throws IOException{
		
		this.nomExp=nomExp;
		this.adresseExp=adresseExp;
		this.villeExp= villeExp;
		this.cpExp=cpExp;
		this.yearA=yearA;
		this.monthA=monthA;
		this.dayA=dayA;
		this.lieuA=lieuA;
		this.heureA=heureA;
		
		this.yearR=yearR;
		this.monthR=monthR;
		this.dayR=dayR;
		this.lieuR = lieuR;
		this.heureR= heureR;
		
		this.yearE=yearE;
		this.monthE=monthE;
		this.dayE=dayE;
		
		this.nom=nom;
		this.prenom=prenom;
		this.adresse=adresse;
		this.ville=ville ;
		
		this.poste=poste;
		this.motifConvocation=motifConvocation;
		this.ordreDuJour= ordreDuJour;
		
		Document doc = new Document(); 
		String cheminFichier = "convocation.pdf" ;
		try {
			PdfWriter.getInstance(doc, new FileOutputStream(cheminFichier));
			doc.open(); 			
			
			// on remplit le pdf
			addAdresseExp(doc,this.nomExp,this.adresseExp,this.villeExp,this.cpExp);
			addAdresseDestinataire(doc,this.nom,this.prenom, this.adresse,this.ville);
			addDate(doc);
			addContenu(doc,this.motifConvocation,this.poste,this.ordreDuJour,this.yearE,this.monthE,this.dayE,this.yearA,this.monthA,this.dayA,this.yearR,this.monthR,this.dayR,this.lieuA,this.lieuR,this.heureA,this.heureR);
			
			doc.close();
			// on lance le pdf
			Runtime.getRuntime().exec("evince " + cheminFichier); 
		
		} catch (DocumentException e) {
			e.printStackTrace();
		} 
		
	}
	
	
	private void addDate(Document doc) throws DocumentException {
		String format = "dd/MM/yy"; 
		java.text.SimpleDateFormat formater = new java.text.SimpleDateFormat( format ); 
		Date d = new Date(); 
		Paragraph date= new Paragraph("le "+formater.format( d )+",",smallfont);
		date.setIndentationLeft(50);
		addEmptyLine(date,3);
		doc.add(date);
	}


	private void addContenu(Document doc, String motifConvocation, String poste,
			String ordreDuJour, String yearE, String monthE, String dayE, String yearA, String monthA, String dayA, String yearR, String monthR, String dayR, String lieuA, String lieuR, String heureA, String heureR) throws DocumentException {
		if(motifConvocation.equals("entretien")){
			Paragraph titre = new Paragraph("Madame, Monsieur, \n\n\n",smallfont);
			titre.setIndentationLeft(50);
			doc.add(titre);
			Paragraph firstLine= new Paragraph("Nous avons bien re�u votre offre de candidature au sein de notre entreprise pour le poste de ",smallfont );
			firstLine.setIndentationLeft(30);
			doc.add(firstLine);
			Paragraph contenu= new Paragraph(poste + " et nous vous en remercions. Afin d'examiner votre candidature de mani�re plus compl�te, nous souhaiterions vous rencontrer." +
					" Aussi, nous vous proposons un rendez-vous en nos locaux avec M MARTIN ,le "+ dayE+"/"+monthE +"/"+ yearE+" � 14 heures. " +
					"Si cette date ne vous convenait pas, nous vous remercions de bien vouloir contacter M MARTIN au num�ro 06 14 22 31 74 afin de convenir d'un nouveau rendez-vous.\n" +
					"\n\n\n",smallfont) ;
			contenu.setAlignment(Element.ALIGN_JUSTIFIED);
			doc.add(contenu);
			Paragraph lastLine = new Paragraph("Nous vous prions de croire, Madame, Monsieur , en l'expression de nos sinc�res salutations.",smallfont);
			lastLine.setIndentationLeft(30);
			doc.add(lastLine);
		}
		
		else if(motifConvocation.equals("reunion")){
			Paragraph objet = new Paragraph("Objet : Convocation r�union",basefont);
			doc.add(objet);
			Paragraph titre = new Paragraph("Madame, Monsieur, \n\n\n",smallfont);
			titre.setIndentationLeft(50);
			doc.add(titre);
			Paragraph firstLine= new Paragraph("Nous vous informons que la r�union se tiendra le "+dayR+"/"+monthR+"/"+ yearR+", � "+ heureR +"h, � "+lieuR+". ",smallfont );
			firstLine.setIndentationLeft(30);
			doc.add(firstLine);
			Paragraph contenu= new Paragraph("Par ailleurs, nous vous rappelons que vous pouvez nous adresser les questions que vous souhaitez voir abord�es lors de la r�union, " +
					"jusqu�� deux jours avant la date pr�vue.\n\n\n",smallfont) ;
			contenu.setAlignment(Element.ALIGN_JUSTIFIED);
			doc.add(contenu);
			Paragraph lastLine = new Paragraph("Nous vous prions d�agr�er, Madame, Monsieur, nos respectueuses salutations.",smallfont);
			lastLine.setIndentationLeft(30);
			doc.add(lastLine);
					
		}
		
		else if(motifConvocation.equalsIgnoreCase("assembleeG")){
			Paragraph Objet = new Paragraph("Objet : Convocation A.G.\n\n",basefont);
			doc.add(Objet);
			Paragraph titre = new Paragraph("Madame, Monsieur, \n\n\n",smallfont);
			titre.setIndentationLeft(50);
			doc.add(titre);
			Paragraph firstLine= new Paragraph("Nous vous informons que la r�union se tiendra le "+dayA+" "+monthA+" "+ yearA+", � "+ heureA +"h, � "+lieuA+". ",smallfont );
			firstLine.setIndentationLeft(30);
			doc.add(firstLine);
			Paragraph contenu= new Paragraph("A l'ordre du jour : \n" +ordreDuJour+"\n\n",smallfont) ;
			contenu.setAlignment(Element.ALIGN_JUSTIFIED);
			doc.add(contenu);
			Paragraph lastLine = new Paragraph("Veuillez agr�er, Madame, Monsieur, l'expression de mes salutations distingu�es.",smallfont);
			lastLine.setIndentationLeft(30);
			doc.add(lastLine);
}
	}


	private void addAdresseExp(Document doc,String nomExp, String adresseExp, String villeExp,
			String cpExp) throws DocumentException {
		Paragraph exp = new Paragraph();
		exp.add(new Paragraph(nomExp,basefont));
		exp.add(new Paragraph(adresseExp,basefont));
		exp.add(new Paragraph(cpExp+" "+villeExp, basefont));
		addEmptyLine(exp,3);
		doc.add(exp);
	}


	private void addAdresseDestinataire(Document doc, String nom,
			String prenom, String adresse, String ville) throws DocumentException {
		Paragraph destinataire = new Paragraph();
		destinataire.add(new Paragraph(nom+" "+ prenom,basefont));
		destinataire.add(new Paragraph(adresse,basefont));
		destinataire.add(new Paragraph(ville,basefont));
		destinataire.setAlignment(Element.ALIGN_RIGHT);
		addEmptyLine(destinataire,4);
		doc.add(destinataire);
	}
	
	private static void addEmptyLine(Paragraph paragraph, int number) {
		for (int i = 0; i < number; i++) {
			paragraph.add(new Paragraph(" "));
		}
	}

}
